//  实现 call - 2
// 多参数调用
function person(a, b, c, d) {
  console.log(this.name);
  console.log(a, b, c, d);
}

var student = {
  name: 'Xmo'
};
const _this = this;
Function.prototype.newCall = function (obj) {
  // 创建一个对象，来执行自己
  var obj = obj || _this;
  obj.p = this;
  var newArguments = [];
  // 获取所有参数
  for (let i = 1; i < arguments.length; i++) {
    newArguments.push('arguments[' + i + ']');
  }
  // 将参数放入函数中
  eval('obj.p(' + newArguments + ')');
  delete obj.p;
}

person.newCall(null, 'China', 'America', 'Japan', 'India');